﻿using System;
using System.Data;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace template_dll
{
    public partial class Form8 : Form
    {
        public Form8()
        {
            InitializeComponent();
        }

        public bool ph = true;
        public bool tt = false;
        public bool cat = false;
        public bool dr = true;
        public int actionId = 0;
        public SqlConnection conn;
        public DataTable result_tbl;

        private void Form8_Load(object sender, EventArgs e)
        {
            radioButton1.Checked = dr;
            radioButton2.Checked = tt;
            radioButton3.Checked = cat;
            radioButton4.Checked = ph;

        }

        private void button1_Click(object sender, EventArgs e)
        {
            DataTable template = new DataTable();
            if (radioButton1.Checked)
            {
                template.Columns.Add("Код товара");
                template.Columns.Add("Товар");
            }
            if (radioButton2.Checked)
            {
                template.Columns.Add("Код ТТ");
                template.Columns.Add("ТТ");
            }
            if (radioButton4.Checked)
            {
                template.Columns.Add("Код аптеки");
                template.Columns.Add("Аптека");
            }
            if (radioButton3.Checked)
            {
                template.Columns.Add("ИД категории аптеки");
                template.Columns.Add("Категория аптеки");
            }
            template.Columns.Add("План");
            //if (actionId == 0)
            //{               
            //    template.Columns.Add("январь " + DateTime.Now.Year.ToString() + "*");
            //    template.Columns.Add("февраль " + DateTime.Now.Year.ToString() + "*");
            //    template.Columns.Add("март " + DateTime.Now.Year.ToString() + "*");
            //    template.Columns.Add("апрель " + DateTime.Now.Year.ToString() + "*");
            //    template.Columns.Add("май " + DateTime.Now.Year.ToString() + "*");
            //    template.Columns.Add("июнь " + DateTime.Now.Year.ToString() + "*");
            //    template.Columns.Add("июль " + DateTime.Now.Year.ToString() + "*");
            //    template.Columns.Add("август " + DateTime.Now.Year.ToString() + "*");
            //    template.Columns.Add("сентябрь " + DateTime.Now.Year.ToString() + "*");
            //    template.Columns.Add("октябрь " + DateTime.Now.Year.ToString() + "*");
            //    template.Columns.Add("ноябрь " + DateTime.Now.Year.ToString() + "*");
            //    template.Columns.Add("декаюрь " + DateTime.Now.Year.ToString() + "*");
            //}
            //else
            //{
            //    SqlStorProc.sp_params[] par = new SqlStorProc.sp_params[1];
            //    par[0].name = "@actionid";
            //    par[0].value = actionId;
            //    DataTable dt = new SqlStorProc().SqlProcExecWithQueryOneTable(conn, "pas_Actions_MontsPercentSel", 300, par);
            //    foreach (DataRow row in dt.Rows)
            //        template.Columns.Add(DateToString(Convert.ToDateTime(row[0])));

            //}


            new ExpToExcel().ExportToExcel(template);
        }

        private string DateToString(DateTime dt)
        {
            string res = "";

            int m = dt.Month;
            switch (m)
            {
                case 1:
                    res = "январь";
                    break;
                case 2:
                    res = "февраль";
                    break;
                case 3:
                    res = "март";
                    break;
                case 4:
                    res = "апрель";
                    break;
                case 5:
                    res = "май";
                    break;
                case 6:
                    res = "июнь";
                    break;
                case 7:
                    res = "июль";
                    break;
                case 8:
                    res = "август";
                    break;
                case 9:
                    res = "сентябрь";
                    break;
                case 10:
                    res = "октябрь";
                    break;
                case 11:
                    res = "ноябрь";
                    break;
                case 12:
                    res = "декабрь";
                    break;
            }
            if (res != "") res += " " + dt.Year + "*";
            return res;
        }

        private bool IsDate(string dt)
        {
            bool res = false;

            if (dt.IndexOf("*") > -1)
            {
                dt = dt.Replace("*", "");
                if (dt.IndexOf(" ") > -1)
                {
                    string m = dt.Trim().Substring(0, dt.IndexOf(" ") - 1);
                    switch (m)
                    {
                        case "январь":
                            res = true;
                            break;
                        case "февраль":
                            res = true;
                            break;
                        case "март":
                            res = true;
                            break;
                        case "апрель":
                            res = true;
                            break;
                        case "май":
                            res = true;
                            break;
                        case "июнь":
                            res = true;
                            break;
                        case "июль":
                            res = true;
                            break;
                        case "август":
                            res = true;
                            break;
                        case "сентябрь":
                            res = true;
                            break;
                        case "октябрь":
                            res = true;
                            break;
                        case "ноябрь":
                            res = true;
                            break;
                        case "декабрь":
                            res = true;
                            break;
                    }
                    if (res)
                    {
                        try
                        {
                            Convert.ToInt32(dt.Trim().Replace(m + " ", ""));
                        }
                        catch
                        {
                            res = false;
                        }
                    }
                }
            }
            return res;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            result_tbl = new ExpToExcel().ImportExcel(result_tbl);
            if (result_tbl != null)
            {
                for (int i = result_tbl.Columns.Count - 1; i > -1; i--)
                {
                    string name = result_tbl.Columns[i].ColumnName;
                    if (name != "Код товара" && name != "Товар" &&
                       name != "Код ТТ" && name != "ТТ" &&
                       name != "Код аптеки" && name != "Аптека" &&
                       name != "ИД категории аптеки" && name != "Категория аптеки" &&
                       name != "План" && !IsDate(name))
                    {
                        result_tbl.Columns.RemoveAt(i);
                    }
                    else
                    {
                        bool fl = false;
                        foreach (DataRow row in result_tbl.Rows)
                        {
                            if (row[i] != null)
                            {
                                fl = true;
                                break;
                            }
                        }
                        if (!fl) result_tbl.Columns.RemoveAt(i);
                    }
                }
                dataGridView1.DataSource = null;
                dataGridView1.DataSource = result_tbl.DefaultView;
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            //if(dataGridView1.Columns.Contains("Код товара") || dataGridView1.Columns.Contains("Код ТТ"))
            //{
            //    if (dataGridView1.Columns.Contains("Код аптеки") || dataGridView1.Columns.Contains("ИД категории аптеки"))
            //    {
            //    }
            //    else
            //    {
            //    }
            //}
            //else
            //{
            //    if (dataGridView1.Columns.Contains("Код аптеки") || dataGridView1.Columns.Contains("ИД категории аптеки"))
            //    {
            //    }
            //    else
            //    {
            //    }
            //}
            if (dataGridView1.Columns.Contains("Код товара") && dataGridView1.Columns.Contains("Код аптеки") && dataGridView1.Columns.Contains("План"))
            {
                for (int i = result_tbl.Columns.Count - 1; i > -1; i--)
                {
                    string name = result_tbl.Columns[i].ColumnName;
                    if (name != "Код товара" && name != "Код аптеки" && name != "План")
                    {
                        result_tbl.Columns.RemoveAt(i);
                    }
                }
                result_tbl.Columns["Код аптеки"].SetOrdinal(0);
                result_tbl.Columns["Код товара"].SetOrdinal(1);
                result_tbl.Columns["План"].SetOrdinal(2);
                result_tbl.Columns.Add("totalsum");
                result_tbl.Columns.Add("totalcheks");
                this.DialogResult = DialogResult.OK;
            }
            else
            {
                if (!dataGridView1.Columns.Contains("Код товара")) MessageBox.Show("Не хватает поля 'Код товара'");
                if (!dataGridView1.Columns.Contains("Код аптеки")) MessageBox.Show("Не хватает поля 'Код аптеки");
                if (!dataGridView1.Columns.Contains("План")) MessageBox.Show("Не хватает поля 'План'");
            }
        }


    }
}

       